package conf

import (
	"github.com/BurntSushi/toml"
	"github.com/caarlos0/env/v6"
)

var (
	config *Config
)

// 把全局对象保护起来
func C() *Config {
	if config == nil {
		panic("请加载程序配置..., LoadConfigFromToml/LoadConfigFromEnv")
	}
	return config
}

// 写config对象如何进行加载

// toml 文件加载
func LoadConfigFromToml(path string) (*Config, error) {
	conf := DefaultConfig()
	_, err := toml.DecodeFile(path, conf)
	if err != nil {
		return nil, err
	}
	config = conf
	return conf, nil
}

// LoadConfigFromEnv()
// 通过环境变量读取配置
// 使用第三方库: "github.com/caarlos0/env/v6"
// 读取环境变量 环境变量---> config object
func LoadConfigFromEnv() (*Config, error) {
	// os.Getenv("MYSQL_DB")
	conf := DefaultConfig()
	err := env.Parse(conf)
	if err != nil {
		return nil, err
	}
	config = conf
	return nil, nil
}
